package com.ynet.middleground.approve.service;

import java.util.List;

import javax.validation.Valid;

import com.ynet.core.common.ServiceResult;
import com.ynet.middleground.approve.bean.CreateProcessModelReq;
import com.ynet.middleground.approve.bean.ProcessModelReq;
import com.ynet.middleground.approve.bean.QueryModelReqPager;
import com.ynet.middleground.approve.dto.ProcessModelDTO;

/**
 * @author liulx
 * @description 流程模型接口服务类
 * @date 2019-10-11 14:30
 */
public interface ProcessModelerService {

    /**
     * 创建模型
     * 
     * @param processModelReq
     *            流程模型创建请求对象: {模型名称,key,描述}
     * @return 创建结果标志，返回模型id
     */
    ServiceResult<String> create(@Valid CreateProcessModelReq processModelReq);

    /**
     * 发布模型
     * 
     * @param processModelReq
     *            流程模型发布请求对象: {模型ID}
     * @return 发布结果标志，以success 字段值标识 true/false
     */
    ServiceResult publish(@Valid ProcessModelReq processModelReq);

    /**
     * 分页查询流程模型列表
     * 
     * @param queryModelReqPager
     *            流程模型查询请求对象: {模型名称, key}
     * @return 流程模型列表
     */
    ServiceResult<List<ProcessModelDTO>> listModelByPage(@Valid QueryModelReqPager queryModelReqPager);

    /**
     * 删除模型
     * 
     * @param processModelReq
     *            删除模型请求对象: {模型ID}
     * @return 删除结果标志，以success 字段值标识 true/false
     */
    ServiceResult removeModelByModelId(@Valid ProcessModelReq processModelReq);
}
